package com.sunyard.manage.service;

import com.sunyard.dal.bo.finger.FingerAddBO;
import com.sunyard.dal.bo.finger.FingerAuditBO;
import com.sunyard.dal.bo.finger.FingerCopyQueryBO;
import com.sunyard.dal.bo.finger.FingerDeleteBO;
import com.sunyard.dal.bo.finger.OpFingerReqBO;
import com.sunyard.dal.bo.PaginationBO;
import com.sunyard.dal.dto.DownloadFingerResDTO;
import com.sunyard.dal.dto.FingerCopyQueryResDTO;
import com.sunyard.dal.dto.OpFingerResDTO;
import com.sunyard.utils.Response.BaseResult;
import com.sunyard.utils.manage.DataGrid;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface FingerService {
    /**
     * 指纹录入
     *
     * @param addBO
     * @param request [addBO, request]
     * @return BaseResult
     * @author: guangw.dang
     * @Date: 2022/7/13 13:49
     **/
    BaseResult addFigner(FingerAddBO addBO, HttpServletRequest request);

    /**
     * 获取指定用户的指纹列表
     *
     * @param reqBO
     * @param request [reqBO, request]
     * @return BaseResult<List < OpFingerResDTO>>
     * @author: guangw.dang
     * @Date: 2022/7/13 14:50
     **/
    BaseResult<List<OpFingerResDTO>> getOpFigner(OpFingerReqBO reqBO, HttpServletRequest request);

    /**
     * 删除指定用户的指纹信息
     *
     * @param deleteBO [deleteBO]
     * @return BaseResult
     * @author: guangw.dang
     * @Date: 2022/7/13 15:07
     **/
    BaseResult deleteOpFinger(FingerDeleteBO deleteBO, HttpServletRequest request);

    /**
     * 分页查询指纹审核信息
     *
     * @param queryBO
     * @param request [queryBO, request]
     * @return BaseResult<DataGrid < FingerCopyQueryResDTO>>
     * @author: guangw.dang
     * @Date: 2022/7/13 16:05
     **/
    BaseResult<DataGrid<FingerCopyQueryResDTO>> getFingerCopyByPage(PaginationBO<FingerCopyQueryBO> queryBO, HttpServletRequest request) throws Exception;

    /**
     * 指纹审核导出
     * @author tsz
     * @date 2022/12/14
     * @param :
     * @return 
     * @throws 
    */
    void  fingerAuditExport(HttpServletResponse response, FingerCopyQueryBO fingerCopyQueryBO, HttpServletRequest request);

    /**
     * 指纹信息审核
     *
     * @param auditBO
     * @param request [auditBO, request]
     * @return BaseResult
     * @author: guangw.dang
     * @Date: 2022/7/13 16:40
     **/
    BaseResult auditFinger(FingerAuditBO auditBO, HttpServletRequest request);

    /**
     * 指纹下载
     *
     * @param reqBO
     * @param request [reqBO, request]
     * @return BaseResult<List < DownloadFingerResDTO>>
     * @author: guangw.dang
     * @Date: 2022/7/18 9:22
     **/
    BaseResult<List<DownloadFingerResDTO>> downloadFigner(OpFingerReqBO reqBO, HttpServletRequest request);

    BaseResult batchAuditFinger(FingerAuditBO auditBO, HttpServletRequest request);

    BaseResult<List<DownloadFingerResDTO>> batchDownloadFigner(OpFingerReqBO reqBO, HttpServletRequest request);

    BaseResult fingerConvert();
}
